package com.zw.mes.module.materialRequisition.mapper;

import com.zw.mes.entity.sys.User;
import com.zw.mes.module.materialRequisition.model.CollMatDetail;
import com.zw.mes.module.materialRequisition.model.VerifySheet;
import com.zw.mes.module.prodtaskmanager.model.SysDeptModel;
import com.zw.mes.module.verify.model.OrgModel;
import com.zw.mes.module.verify.model.VerifyInfoModel;
import com.zw.mes.module.verify.model.VerifyProcess;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @className: MatReqMapper
 * @description: 领料申请持久层
 * @author： 徐一贺 18341916590
 * @date： 2021/4/12 15:03
 * @office: 智能控制设计科
 * @research institute： 智能控制设计所
 * @department： 机械设计院
 * @company: 辽宁忠旺机械设备制造有限公司
 * @group： 忠旺集团
 * @version: 1.0
 */
@Repository
public interface MatReqMapper {

    /**
     * @methodName: getDeptModelByPrimary
     * @description: 根据部门表主键获取部门信息
     * @param: deptId
     * @return： com.zw.mes.module.prodtaskmanager.model.SysDeptModel
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 15:11
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    SysDeptModel getDeptModelByPrimary(Integer deptId);

    /**
     * @methodName: getMaterialRequisition
     * @description: 根据领料单流水号倒序排序获取数据库中领料单最新流水号
     * @param:
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 17:57
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    String getMaterialRequisition();

    /**
     * @methodName: insertVerifySheet
     * @description: 插入领料申请单主单信息
     * @param: verifySheet
     * @return： java.lang.Integer
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 18:13
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer insertVerifySheet(VerifySheet verifySheet);

    /**
     * @methodName: insertCollMatDetail
     * @description: 插入领料申请单明细信息
     * @param: collMatDetail
     * @return： java.lang.Integer
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 18:23
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer insertCollMatDetail(CollMatDetail collMatDetail);

    /**
     * @methodName: findVerifySheetSubmitListByParam
     * @description: 根据条件查询领料申请提交页面查询列表
     * @param: param
     * @return： java.util.List<com.zw.mes.module.materialRequisition.model.VerifySheet>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 18:42
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<VerifySheet> findVerifySheetSubmitListByParam(VerifySheet param);

    /**
     * @methodName: getVerifySheetByPrimaryKey
     * @description: 根据主键获取审核主单信息
     * @param: id
     * @return： com.zw.mes.module.materialRequisition.model.VerifySheet
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 19:06
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    VerifySheet getVerifySheetByPrimaryKey(Integer id);

    /**
     * @methodName: findCollMatDetailByCmrdSheetId
     * @description: 根据主单主键获取明细列表
     * @param: id
     * @return： java.util.List<com.zw.mes.module.materialRequisition.model.CollMatDetail>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 19:09
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<CollMatDetail> findCollMatDetailByCmtdSheetId(Integer id);

    /**
     * @methodName: getCollMatDetailByPrimaryKey
     * @description: 根据主键获取领料申请单明细表数据
     * @param: cmtdId
     * @return： com.zw.mes.module.materialRequisition.model.CollMatDetail
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 19:59
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    CollMatDetail getCollMatDetailByPrimaryKey(Integer cmtdId);

    /**
     * @methodName: updateCollMatDetailByParmaryKey
     * @description: 根据主键更新领料申请单明细表数据
     * @param: collMatDetail
     * @return： java.lang.Integer
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 20:02
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer updateCollMatDetailByParmaryKey(CollMatDetail collMatDetail);

    /**
     * @methodName: deleteCollMatDetailByPrimarkKey
     * @description: 根据主键删除领料申请单明细表数据
     * @param: cmtdId
     * @return： java.lang.Integer
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/12 20:43
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer deleteCollMatDetailByPrimarkKey(Integer cmtdId);

    /**
     * @methodName: updateVerifySheetDelFlagByPrimaryKey
     * @description: 根据主键更改领料申请主表的删除状态
     * @param: sheet
     * @return： java.lang.Integer
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 8:02
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer updateVerifySheetDelFlagByPrimaryKey(VerifySheet sheet);

    /**
     * @methodName: findAppNodeInfoByUserIdToEst
     * @description: 根据用户ID 查询该用户下所有领料申请审核流程
     * @param: id
     * @return： java.util.List<AuditProcessModel>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 8:36
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<VerifyProcess> findAppNodeInfoByUserIdToEst(Integer id);

    /**
     * @methodName: findAppNodeInfoToEst
     * @description: 寻找审核节点
     * @param: level
     * @return： java.util.List<com.zw.mes.module.verify.model.VerifyInfoModel>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 8:44
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<VerifyInfoModel> findAppNodeInfoToEst(int level);

    /**
     * @methodName: getNowLevelByUserIdToEst
     * @description: 根据我当前登录的账号，和流程配置的级别，找到审核者、
     * @param: id
     * @return： int
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 8:49
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer getNowLevelByUserIdToEst(Integer id);

    /**
     * @methodName: findNextLevelUserByPId
     * @description: 寻找上一级审核者
     * @param: pid
     * @return： com.zw.mes.module.verify.model.OrgModel
     * @exception： 
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 8:53
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    OrgModel findNextLevelUserByPId(int pid);

    /**
     * @methodName: insertVerifyProcess
     * @description: 插入审核流程
     * @param: addVerifyProcess
     * @return： java.lang.Integer
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 8:58
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer insertVerifyProcess(VerifyProcess addVerifyProcess);

    /**
     * @methodName: updateVerifySheetByPrimaryKey
     * @description: 更新领料申请审核主表信息
     * @param: sheet
     * @return： java.lang.Integer
     * @exception： 
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 12:54
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer updateVerifySheetByPrimaryKey(VerifySheet sheet);

    /**
     * @methodName: auditList
     * @description: 获取审核列表
     * @param: param
     * @return： java.util.List<com.zw.mes.module.materialRequisition.model.VerifySheet>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 13:24
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<VerifySheet> auditList(VerifySheet param);

    /**
     * @methodName: getLastVerifyProcessBySheetIdAndCode
     * @description: 根据审核主单id和流程码获取最后的审核流程
     * @param: condition
     * @return： com.zw.mes.module.verify.model.VerifyProcess
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 14:12
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    VerifyProcess getLastVerifyProcessBySheetIdAndCode(VerifyProcess condition);
    /**
     * @methodName: updateVerifyProcessAppStatusAndAppTimeByPrimaryKey
     * @description: 根据主键更新审核状态和审核时间
     * @param: lastVerifyProcess
     * @return： java.lang.Integer
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 14:22
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer updateVerifyProcessAppStatusAndAppTimeByPrimaryKey(VerifyProcess lastVerifyProcess);

    /**
     * @methodName: getUserByPrimaryKey
     * @description: 根据主键获取用户
     * @param: verifier
     * @return： com.zw.mes.entity.sys.User
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 14:35
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    User getUserByPrimaryKey(Integer id);

    /**
     * @methodName: getAuditLevelByNowNode
     * @description: 根据当前节点获取审核级别
     * @param: nowNode
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 14:42
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    String getAuditLevelByNowNode(Integer nowNode);

    /**
     * @methodName: findAppNodeInfoByUserId
     * @description: 获取当前节点
     * @param: id
     * @return： java.util.List<com.zw.mes.module.verify.model.VerifyInfoModel>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 14:51
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<VerifyInfoModel> findAppNodeInfoByUserId(Integer id);

    /**
     * @methodName: findAppNodeInfo
     * @description: 获取下一节点
     * @param: orderNo
     * @return： java.util.List<com.zw.mes.module.verify.model.VerifyInfoModel>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 14:59
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<VerifyInfoModel> findAppNodeInfo(Integer orderNo);

    /**
     * @methodName: getNowLevelByUserId
     * @description: 根据我当前登录的账号，和流程配置的级别，找到审核者、
     * @param: id 当前用户主键
     * @return： java.lang.Integer
     * @exception： 
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 15:01
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    Integer getNowLevelByUserId(Integer id);

    /**
     * @methodName: findNextUserByNgInfo
     * @description: 根据我当前审批记录，找到我上一个临近的审批记录
     * @param: id
     * @return： com.zw.mes.module.verify.model.VerifyProcess
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 15:07
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    VerifyProcess findNextUserByNgInfo(Integer id);

    /**
     * @methodName: queryList
     * @description: 领料申请查询列表
     * @param: param
     * @return： java.util.List<com.zw.mes.module.materialRequisition.model.VerifySheet>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/13 16:05
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<VerifySheet> queryList(VerifySheet param);
    /**
     * @methodName: findSysDept
     * @description: 获取非删除的部门列表
     * @param:
     * @return： java.util.List<com.zw.mes.module.prodtaskmanager.model.SysDeptModel>
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/15 8:14
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    List<SysDeptModel> findSysDept();
}
